
#include"Compile_Run.hpp"
#include"../Comm/httplib.h"


void Usage(std::string proc)
{
    std::cerr << "Usage: " << "\n\t" << proc << " port" << std::endl;
}

//使用时需要指明端口号
//./compile_server port
int main(int argc, char *argv[])
{
    if(argc != 2){
        Usage(argv[0]);
        return 1;
    }
    // std::string filename="code";
    // ns_Compiler::Compiler::Compile(filename);
    // ns_Runner::Runner::Run(filename,1,1024*10);

    // std::string in_json;
    // Json::Value in_value;
    // //R"(...)"保持括号中的数据原样，不做特殊处理
    // in_value["code"]=R"(#include<iostream>
    //     int main()
    //     {
    //         std::cout<<"haha"<<std::endl;
    //         while(1);
    //         int* p=new int[1024*1024*50];
    //         int a=10/0;
    //         return 0;
    //     })";
    // in_value["input"]="10 20";
    // in_value["cpu_limit"]=1;
    // in_value["mem_limit"]=1024*20;
    // Json::FastWriter writer;
    // in_json=writer.write(in_value);
    // std::cout<<in_json<<std::endl;

    // std::string out_json;
    // ns_CR::CompileRun::Start(in_json,out_json);
    // std::cout<<out_json<<std::endl;

    httplib::Server server;
    server.Post("/compile_server",[](const httplib::Request& req,httplib::Response& resp){
        //获取请求正文数据
        std::string in_json=req.body;
        std::string out_json;
        if(!in_json.empty())
        {
            OnlineOJ::ns_CR::CompileRun::Start(in_json,out_json);
            resp.set_content(out_json,"application/json;charset=utf-8");
        }
    });

    //启动服务
    server.listen("0.0.0.0",std::stoi(argv[1]));
    return 0;
}
